package cn.edu.sdjzu.xg.kcsj.controller.basic;

import cn.edu.sdjzu.xg.kcsj.domain.SA;
import cn.edu.sdjzu.xg.kcsj.service.SAService;
import cn.edu.sdjzu.xg.kcsj.util.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet( "/saUpdate")
public class SaUpdateController extends HttpServlet {
    private static final Logger log = LogManager.getLogger(SaAddController.class);

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 创建JSONObject对象message，以便往前端响应信息
        JSONObject message = new JSONObject();
        // 将request body转换为JSON字串
        String sa_json = JSONUtil.getJSON(request);
        try {
            // 如果为空直接往前台响应"未收到请求信息"
            if (sa_json == null) {
                message.put("message", "未收到请求信息");
                log.debug("未收到请求信息");
                // 勿忘在前台输出message
                response.getWriter().println(message);
            } else { // 请求不为空
                SA sa = JSON.parseObject(sa_json, SA.class);
                Boolean updated = SAService.getInstance().update(sa);
                // true为修改成功，false为修改失败
                if (updated) {
                    message.put("message", "修改成功");
                    message.put("SA", sa);
                    log.debug("修改成功");
                } else {
                    message.put("message", "修改失败");
                    log.debug("修改失败");
                }
                response.getWriter().println(message);
            }
        } catch (SQLException e) {
            message.put("message", "数据库操作异常");
            //响应message到前端
            response.getWriter().println(message);
            // 在命令行打印异常信息在程序中出错的位置及原因
            e.printStackTrace();
        } catch (Exception e) {
            message.put("message", "网络异常");
            //响应message到前端
            response.getWriter().println(message);
            // 在命令行打印异常信息在程序中出错的位置及原因
            e.printStackTrace();
        }
    }
}
